// 与数据库交互
const blog = require("../model/blogModel")
const blogType = require("../model/blogTypeModel")


// 添加

module.exports.addBlog = async function(Info) {
    const { dataValues } = await blog.create(Info);
    return dataValues;

}

// 根据分页信息来查询博客
module.exports.findBlogByPageDao = async function(pageInfo) {
    // { page: '1', limit: '5', categoryid: '2' }

    if (pageInfo.categoryid && pageInfo.categoryid !== '-1') {
        // 根据分类信息来进行分页查询
        const result = await blog.findAndCountAll({
            include: [{
                model: blogType,
                as: "category",
                where: {
                    id: pageInfo.categoryid
                }
            }],
            offset: (pageInfo.page * 1 - 1) * pageInfo.limit,
            limit: pageInfo.limit * 1
        })

        return result
    } else {
        // 根据所有博客文章进行分页查询
        const result = await blog.findAndCountAll({
            include: [{
                model: blogType,
                as: "category"
            }],
            offset: (pageInfo.page * 1 - 1) * pageInfo.limit,
            limit: pageInfo.limit * 1
        })
        return result
    }
}



// 根据 id 获取其中一篇文章
module.exports.findBlogByIdDao = async function(id) {
    return await blog.findByPk(id, {
        include: [{
            model: blogType,
            as: "category"
        }]
    })
}



// 修改一篇博文
module.exports.updateBlogDao = async function(id, newBlogInfo) {
    await blog.update(newBlogInfo, {
        where: {
            id
        }
    });
    return await blog.findByPk(id);
}

// 删除一篇博客
module.exports.deleteBlogDao = async function(id) {
    return await blog.destroy({
        where: {
            id
        }
    })
}



// 该方法根据博客类别 id，统计对应该博客类型 id 的博文数量
module.exports.blogCountByBlogType = async function(categoryId) {
    return await blog.count({
        where: {
            categoryId
        }
    })
}